﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace BibliotecaClases
{
    public class ClaseValidacion
    {
        public bool ValidarDNI(string dni)
        {
            bool resultado = true;
            string numeros="", letra="";
            int nif=0;
            string Patron = @"[0-9]{8}-[A-Z]";
            if (!(Regex.Match(dni, Patron).Success))
            {
                resultado = false;
            }
            else 
            {
                for(int i = 0; i<8; i++)
                {
                    numeros = numeros + dni[i];
                }
                nif = int.Parse(numeros);
                letra = dni[9].ToString();
                if(letra != "TRWAGMYFPDXBNJZSQVHLCKE"[nif % 23].ToString())
                    resultado = false;
            }
            return resultado;
        }

        /*
        public char LetraNIE(string nie)
        {
            int n;
            if ((nie == null) || (nie.Length != 9) || ((char.ToUpper(nie[0]) != 'X') && (char.ToUpper(nie[0]) != 'Y') && (char.ToUpper(nie[0]) != 'Z')) || (!int.TryParse(nie.Substring(1, 7), out n)))
            {
                throw new ArgumentException("El NIE debe comenzar con la letra X, Y o Z seguida de 7 dígitos.");
            }

            switch (char.ToUpper(nie[0]))
            {
                case 'X':
                    return Correspondencia[n % 23];
                case 'Y':
                    return Correspondencia[(10000000 + n) % 23];
                case 'Z':
                    return Correspondencia[(20000000 + n) % 23];
                default:
                    return '\0';
            }
        }*/

        public bool ValidarCodigoPostal(string cp)
        {
            bool resultado = true;
            string Patron = @"^(0[1-9]|5[0-2]|[1-4][0-9])[0-9]{3}$";
            if (!(Regex.Match(cp, Patron).Success))
            {
                resultado = false;
            }
            return resultado;
        }
        
        public bool ValidarTelefono(string telefono)
        {
            bool resultado = true;
            string Patron = @"^(6|9)\d{2}.\d{3}.\d{3}$";
            if (!(Regex.Match(telefono, Patron).Success))
            {
                resultado = false;
            }
            return resultado;
        }

        public bool ValidarEmail(string email)
        {
            bool resultado = true;
            string patron = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
            if (!(Regex.Match(email, patron).Success))
            {
                resultado = false;
            }
            return resultado;
        }

        public bool ValidarLogin(string login)
        {
            bool resultado = true;
            string patron = "\\w";
            if (!(Regex.Match(login, patron).Success))
            {
                resultado = false;
            }
            return resultado;
        }

        public bool ValidarPassword(string pass)
        {
            bool resultado = true;
            string patron = "\\w";
            if (!(Regex.Match(pass, patron).Success))
            {
                resultado = false;
            }
            return resultado;
        }

        public bool ValidarRPassword(string pass, string rpass)
        {
            bool resultado = true;
            if (pass != rpass)
                resultado = false;
            return resultado;
        }

        public string FechaCorta(string fecha)
        {
            string resultado = "";
            if (fecha == "")
                return fecha;
            else
            {
                for (int i = 0; i < 10; i++)
                {
                    resultado = resultado + fecha[i];
                }
                return resultado;
            }
        }

/*
        //  Evento TextChanged para que solo se puedan introducir numeros
        public string SoloNumeros(string t)
        {
            /string texto = t;
             string Patron = @"^\d{1}$|^\d{2}$|^\d{3}$|^\d{4}$|^\d{5}$|^\d{6}$|^\d{7}$|^\d{8}$|^\d{9}$|^\d{10}$|^\d{11}$|^\d{12}$|^\d{13}$|^\d{14}$|^\d{15}$|^\d{16}$|^\d{17}$|^\d{18}$|^\d{19}$|^\d{20}$";
             if (!(Regex.Match(t, Patron).Success))
             {
                 texto = string.Empty;
                 for (int i = 0; i < t.Length - 1; i++)
                 {
                   texto += t[i];
                 }
             }
             return texto;


            string texto = t;
            string Patron = @"^(?=.*[1-9].*$)\d{0,7}(?:\.\d{0,9})?$";
            if (!(Regex.Match(t, Patron).Success))
            {
                texto = string.Empty;
                for (int i = 0; i < t.Length - 1; i++)
                {
                    texto += t[i];
                }
            }
            return texto;
        }
        public bool ValidarPrecio(string p)
        {
            bool resultado = true;
            string Patron = @"^\d\d*,\d\d*$|^\d\d*$";


            if (!(Regex.Match(p, Patron).Success))
            {
                resultado = false;
            }
            return resultado;
        }

        public bool ValidarInt(string t)
        {
            bool resultado = true;
            string Patron = @"^\d{1}$|^\d{2}$|^\d{3}$|^\d{4}$|^\d{5}$|^\d{6}$|^\d{7}$|^\d{8}$|^\d{9}$|^\d{10}$|^\d{11}$|^\d{12}$|^\d{13}$|^\d{14}$|^\d{15}$|^\d{16}$|^\d{17}$|^\d{18}$|^\d{19}$|^\d{20}$";
            if (!(Regex.Match(t, Patron).Success))
            {
                resultado = false;
            }
            return resultado;
        }

        public bool ValidarFecha(string fech)
        {
            bool resultado = true;
            string Patron = @"\d{1,2}/\d{1,2}/\d{4}$";
            if (!(Regex.Match(fech, Patron).Success))
            {
                resultado = false;
            }
            return resultado;
        }
     */   
    }
}
